#pragma once
#include <i_component_factory.h>
#include <i_component_holder.h>
#include <i_sigslot.hpp>
#include <modules/i_command.h>

struct CCommandInfo;
typedef std::shared_ptr<CCommandInfo> CCommandInfoPtr;

class CApplication : public slot
{
public:
	CApplication();
	~CApplication();

	static CApplication& instance();

	void Run();
protected:
	void _OnQuit(const CCommandInfoPtr&);
protected:
	bool m_running;
	TComponentHolder<ICommand> m_command;
};
